// ========== 商品分类相关类型定义 ==========

export interface GoodsClassItem {
  objectId: string;
  content: string;
  goodClasses?: GoodsClassItem[];
  label?: string;
  value?: string;
  children?: GoodsClassItem[];
  isLeaf?: boolean;
}

export interface ClassSelectEmitData {
  name: string;
  objectId: string;
  selected?: string[][]; // 多选模式下返回所有选中的值路径
}

// 商品分类选择器组件Props类型
export interface GoodsClassSelectorProps {
  /** 当前选中值 */
  modelValue?: string | string[];
  /** 是否多选 */
  multiple?: boolean;
  /** 占位符文本 */
  placeholder?: string;
  /** 是否可清空 */
  allowClear?: boolean;
  /** 是否禁用 */
  disabled?: boolean;
  /** 尺寸 */
  size?: 'small' | 'medium' | 'large';
  /** 是否显示搜索 */
  showSearch?: boolean;
  /** 是否可筛选 */
  filterable?: boolean;
  /** 选择即改变（不需要选到叶子节点） */
  changeOnSelect?: boolean;
}

// 商品分类选择器组件Emits类型
export interface GoodsClassSelectorEmits {
  (e: 'update:modelValue', value: string | string[]): void;
  (e: 'change', value: string | string[], selectedOptions?: any[]): void;
  (e: 'selectClass', data: ClassSelectEmitData): void;
}

// API响应中的原始商品分类数据结构
export interface RawGoodsClassData {
  objectId: string;
  content: string;
  goodClasses?: RawGoodsClassData[];
  children?: RawGoodsClassData[]; // 添加children属性兼容性
  // API可能返回的其他字段
  level?: number;
  parentId?: string;
  sort?: number;
  isActive?: boolean;
  createdAt?: string;
  updatedAt?: string;
}

// Cascader组件选项类型扩展
export interface CascaderOptionWithMeta {
  label: string;
  value: string;
  objectId: string;
  content: string;
  children?: CascaderOptionWithMeta[];
  disabled?: boolean;
  isLeaf?: boolean;
}

// 商品分类API请求参数
export interface GetGoodsClassParams {
  seeRights?: string[];
  parentId?: string;
  level?: number;
  includeInactive?: boolean;
}

// 商品分类API响应结构
export interface GoodsClassApiResponse {
  code: number;
  message?: string;
  data: RawGoodsClassData[];
  maxCount?: number;
  maxPage?: number;
}

// ========== 商品品牌相关类型定义 ==========

// API响应中的原始品牌数据结构
export interface RawBrandData {
  objectId: string;
  name: string;
  // API可能返回的其他字段
  sort?: number;
  isActive?: boolean;
  createdAt?: string;
  updatedAt?: string;
}

// 品牌选择器选项类型
export interface BrandOption {
  label: string;
  value: string;
  objectId: string;
  name: string;
  disabled?: boolean;
}

// 品牌选择事件数据
export interface BrandSelectEmitData {
  name: string;
  objectId: string;
}

// 品牌选择器组件Props类型
export interface GoodsBrandSelectorProps {
  /** 当前选中值 */
  modelValue?: string;
  /** 占位符文本 */
  placeholder?: string;
  /** 是否可清空 */
  allowClear?: boolean;
  /** 是否禁用 */
  disabled?: boolean;
  /** 尺寸 */
  size?: 'small' | 'medium' | 'large';
  /** 是否显示搜索 */
  showSearch?: boolean;
  /** 是否可筛选 */
  filterable?: boolean;
}

// 品牌选择器组件Emits类型
export interface GoodsBrandSelectorEmits {
  (e: 'update:modelValue', value: string): void;
  (e: 'change', value: string, option?: BrandOption): void;
  (e: 'select', data: BrandSelectEmitData): void;
}

// 品牌API请求参数
export interface GetBrandListParams {
  seeRights?: string[] | boolean;
  searchText?: string;
}

// 品牌API响应结构
export interface BrandApiResponse {
  code: number;
  message?: string;
  data: RawBrandData[];
  maxCount?: number;
  maxPage?: number;
}

// ========== 商品图片相关类型定义 ==========

// 商品图片组件Props类型
export interface GoodsImageProps {
  /** 商品数据对象 */
  good: Record<string, any>;
  /** 商品ID字段名，默认为objectId */
  goodKey?: string;
  /** 图片尺寸 */
  size?: number;
  /** 是否启用预览功能 */
  enablePreview?: boolean;
  /** 默认图片路径 */
  fallbackImage?: string;
}

// 商品图片API响应结构
export interface GoodsImageApiResponse {
  code: number;
  message?: string;
  data: string[];
  error?: boolean;
}
